Всем привет. Недавно начал осваивать Comet-технологии. Но поняв что ни инфы, ни норм примеров данной технологии почти нет, я решил остановиться на простой ajax-php имитации. Все бы ничего, так эта имитация не дружит с простыми ajax-запросами. Когда я делаю long-polling запрос, а после этого простой ajax-запрос, то второй вообще не запускается. Сколько не думал, так и не надумал, аж руки опустились. Поэтому обратился на этот форум за помощью. Знатоки JS, буду вам очень благодарен за помощь.
Вот long-polling запрос(скорее весь код):
function Messanger() {
this.last = 0;
this.timeout = 360;
this.comet = 0;
var self = this;
this.putMail = function(mail) {
if(mail!=0){
$("#mail").text(mail);
$('#mail').css('opacity','1');
var audio = $("#newcounttopmenu")[0];
audio.play();
$('#allCount').css('opacity','1');
}else{
$("#mail").text(mail);
$('#mail').css('opacity','0');
}
}
this.parseData = function(message) {
// простая обработка данных полученных с сервера, разбиваем строки и выполняет функции
var items = message.split(';');
if (items.length<1) return false;
for (var i=0;i<items.length;i++) {
eval(items[i]);
}
setTimeout(self.connection,1000);
}
this.connection = function() {
var mail=$("#mail").html();
var jurnal=$("#jurnal").html();
var lenta=$("#lenta").html();
var zakl=$("#zakl").html();
// здесь открывается соединение с сервером
self.comet = $.ajax({
type: "POST",
url: "/sys/ajax/topmenu.php",
async: true,
data: {
mail:mail,
jurnal:jurnal,
lenta:lenta,
zakl:zakl,
},
dataType: "text",
timeout: self.timeout*1000,
success: self.parseData,
error: function(){
// something wrong. but setInterval will set up connection automatically
setTimeout(self.connection,1000);
}
});
}
this.init = function() {
//setInterval(self.connection,self.timeout*1000);
self.connection();
}
this.init();
}
$(document).ready(function(){
// инициализация
var msg = new Messanger();
});
Ну а как построены простые ajax-запросы, я думаю, вы знаете.